package com.hmy.finance.service.statement.dto;

import com.hmy.finance.common.enums.StatementStatusEnum;
import com.hmy.finance.dal.po.json.ContractExtensionInfoJson;
import com.hmy.finance.dal.po.json.CustomerExtensionInfoJson;
import lombok.Data;

import java.io.Serializable;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.List;

/**
 * 设备子对账单
 *
 * @TableName reconciliation_device_statement
 */
@Data
public class ReconciliationDeviceStatementDto implements Serializable {

    /**
     * 主对账单ID
     */
    private Long reconciliationStatementId;

    /**
     * 合同对账单ID
     */
    private Long reconciliationContractStatementId;

    /**
     * 客户ID
     */
    private Long customerId;

    /**
     * 签约人ID
     */
    private Long signatoryId;

    /**
     * 进场合同ID
     */
    private Long contractId;

    /**
     * 设备租赁记录ID
     */
    private Long deviceRentalRecordId;

    /**
     * 进场合同ID
     */
    private String contractNo;

    /**
     * 设备型号
     */
    private String deviceModel;

    /**
     * 设备状态:在租；退租;
     */
    private String deviceStatementStatusDesc;

    /**
     * 设备ID
     */
    private Long deviceId;

    /**
     * 设备编号
     */
    private String deviceNo;

    /**
     * 租金起算时间
     */
    private LocalDateTime rentalStartTime;

    /**
     * 租金结束时间
     */
    private LocalDateTime rentalEndTime;

    /**
     * 设备起租时间
     */
    private LocalDateTime deviceBeginRentTime;

    /**
     * 设备退场时间,可能为null
     */
    private LocalDateTime deviceEndRentTime;

//    /**
//     * 设备已对账金额
//     */
//    private BigDecimal reconciliationedAmount;

    /**
     * 总天数
     */
    private Double totalDays;

    /**
     * 计租天数
     */
    private Double rentalDays;

    /**
     * 租金单价(日租每天或者为月租每天)
     */
    private BigDecimal rentalUnitPrice;

    /**
     * 是否使用月租金价格
     */
    private Boolean useMonthlyRentalPrice = false;

    /**
     * 当前租金价格:日转月之前为日租金(每日价格)，日转月之后是月租金(每月价格)
     */
    private BigDecimal rentalPrice = BigDecimal.ZERO;

    /**
     * 进场运费
     */
    private BigDecimal entryFee = BigDecimal.ZERO;

//    /**
//     * 应付进场运费-Excel展示数据
//     */
//    private BigDecimal displayEntryFee = BigDecimal.ZERO;

    /**
     * 退场运费
     */
    private BigDecimal exitFee = BigDecimal.ZERO;

    /**
     * 应付改装费用
     */
    private BigDecimal modificationPayable = BigDecimal.ZERO;

//    /**
//     * 应付改装费用-Excel展示数据
//     */
//    private BigDecimal displayModificationPayable = BigDecimal.ZERO;

    /**
     * 应付索赔
     */
    private BigDecimal claimPayable = BigDecimal.ZERO;

    /**
     * 仅周期内的事后报停累计
     */
    private BigDecimal pausePayable = BigDecimal.ZERO;

    /**
     * 调整详情Json
     */
//    private ReconciliationAdjustJson reconciliationAdjust;

    /**
     * 应付租金
     */
    private BigDecimal rentPayable;

    /**
     * 总金额
     */
    private BigDecimal totalAmount;

    /**
     * 本次设备损益纬度的信息
     */
    private List<DeviceStatementLossInfoDto> deviceLossInfos;

    /**
     * 合同扩展信息
     */
    private ContractExtensionInfoJson contractExtension;

    /**
     * 客户扩展信息
     */
    private CustomerExtensionInfoJson customerExtension;

    /**
     * 账单状态
     */
    private StatementStatusEnum status;

}